package main

import (
	"fmt"
)

func main() {

	// 定义一个匿名函数
	add := func(a int, b int) int {
		return a + b
	}

	// 调用匿名函数
	addValue := add(1, 2)
	fmt.Println(addValue)

	// 将匿名函数作为参数产给其他匿名函数
	newFunc := func(operation func(int, int) int, x int, y int) int {
		result := operation(x, y)
		return result
	}
	// 调用匿名函数，传入其他匿名函数作为参数
	result := newFunc(add, 1, 2)
	fmt.Println(result)

	// 也可以直接在函数调用中定义匿名函数
	difference := newFunc(func(a int, b int) int {
		return a + b
	}, 10, 20)

	fmt.Println(difference)
}
